@echo off
chcp 65001 >nul
echo ====================================
echo CourseHub 后端API压力测试工具
echo ====================================
echo.

:menu
echo 请选择要运行的测试:
echo 1. 综合压力测试 (4分钟，最高20用户)
echo 2. 创建课程专项测试 (1分50秒，最高10用户)
echo 3. 专项接口测试 (多场景并发)
echo 4. 优化版测试
echo 5. 检查k6是否安装
echo 6. 检查后端服务状态
echo 0. 退出
echo.
set /p choice=请输入选择 (0-6): 

if "%choice%"=="1" goto load_test
if "%choice%"=="2" goto create_course_test
if "%choice%"=="3" goto specific_test
if "%choice%"=="4" goto optimized_test
if "%choice%"=="5" goto check_k6
if "%choice%"=="6" goto check_service
if "%choice%"=="0" goto exit
echo 无效选择，请重新输入
goto menu

:load_test
echo.
echo 开始运行综合压力测试...
echo 测试配置: 分阶段负载，最高20个虚拟用户，包含创建课程测试
echo.
k6 run k6-load-test.js
if %errorlevel% neq 0 (
    echo 测试执行失败，请检查k6是否正确安装或后端服务是否启动
    pause
)
goto menu

:create_course_test
echo.
echo 开始运行创建课程专项测试...
echo 测试配置: 分阶段负载，最高10个虚拟用户，专门测试创建课程功能
echo.
k6 run k6-create-course-test.js
if %errorlevel% neq 0 (
    echo 测试执行失败，请检查k6是否正确安装或后端服务是否启动
    pause
)
goto menu

:optimized_test
echo.
echo 开始运行优化版测试...
echo 测试配置: 优化版压力测试
echo.
k6 run k6-optimized-test.js
if %errorlevel% neq 0 (
    echo 测试执行失败，请检查k6是否正确安装或后端服务是否启动
    pause
)
goto menu



:specific_test
echo.
echo 开始运行专项接口测试...
echo 测试配置: 多场景并发测试
echo.
k6 run k6-api-specific-tests.js
if %errorlevel% neq 0 (
    echo 测试执行失败，请检查k6是否正确安装或后端服务是否启动
    pause
)
goto menu

:check_k6
echo.
echo 检查k6安装状态...
k6 version
if %errorlevel% neq 0 (
    echo k6未安装或未添加到PATH环境变量
    echo 请访问 https://k6.io/docs/get-started/installation/ 获取安装指南
) else (
    echo k6已正确安装
)
echo.
pause
goto menu

:check_service
echo.
echo 检查后端服务状态...
curl -s -o nul -w "HTTP状态码: %%{http_code}\n" http://localhost:8081/api/courses
if %errorlevel% neq 0 (
    echo 无法连接到后端服务，请确认:
    echo 1. 后端服务是否已启动
    echo 2. 服务是否运行在端口8081
    echo 3. 防火墙是否阻止了连接
) else (
    echo 后端服务连接正常
)
echo.
pause
goto menu

:exit
echo 感谢使用CourseHub压力测试工具！
pause
exit /b 0